//Promise还可以做更多的事情，比如，有若干个异步任务，需要先做任务1，如果成功后再做任务2，任何任务失败则不再继续并执行错误处理函数。

// 0.5秒后返回input*input的计算结果:

function multiply(input) {
    return new Promise(function (resolve, reject) {
        console.log('计算: '+ input+'*'+input+'...');
        setTimeout(resolve,500,input*input); //定时器启动时候，第三个以后的参数是作为第一个func()的参数传进去。
    });
}

// 0.5秒后返回input+input的计算结果:
function add(input) {
    return new Promise(function (resolve,reject) {
        console.log('计算: '+ input+'+'+input+'...');
        setTimeout(resolve,500,input+input);
    })
}

var p = new Promise(function (resolve, reject) {
    console.log('start new Promise')
    resolve(2);
});

// 4 8 64 128
p.then(multiply)
.then(add)
.then(multiply)
.then(add)
.then(function (result) {
    console.log('Got value: '+result);
})